package tech.aistar.day04.homework;

import tech.aistar.util.ArrayUtil;

import java.util.Arrays;

/**
 * 本类用来演示:
 *
 * [1,2,3,1,2,1,5,2,1,4,4,1,2,3,4]
 *
 * //1. 统计随机数出现的次数 - 没有出现的就不需要统计了
 *
 * //2. 根据出现的次数进行降序排
 *
 * @author: success
 * @date: 2021/3/11 9:48 上午
 */
public class TwoArrayBaiDuDemo {
    public static void main(String[] args) {
        //数组的初始化操作
        int[] arr = new int[15];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int) (Math.random()*5+1);
        }

        System.out.println(Arrays.toString(arr));

        //统计每个随机数出现的次数
        int[][] temp = countArr(arr);
        for (int i = 0; i < temp.length; i++) {
            for (int j = 0; j < temp[i].length; j++) {
                System.out.print(temp[i][j]+"\t");
            }
            System.out.println();
        }
    }

    private static int[][] countArr(int[] arr) {
        //确定二维数组的行和列
        //列 - 2列  -> 随机数-次数
        //行 - arr进行数组去重
        int[] arrs= ArrayUtil.delRepeatElements(arr);
        int rows = arrs.length;

        int[][] temp = new int[rows][2];

        //定义一个下标计数器
        int pos = 0;

        //arr -> [1,2,3,1,2,1,5,2,1,4,4,1,2,3,4]
        //arrs -> [1,2,3,4,5];//去重之后的
        for (int i = 0; i < arrs.length; i++) {//去重之后的数组
            //定义计数器
            int count = 0;

            for (int j = 0; j < arr.length; j++) {//原数组
                if(arrs[i] == arr[j]){
                    count++;
                }
            }
            //当前arrs[i]和它的count已经统计完毕了
            //二维数组可以一行一行进行赋值
            temp[pos++] = new int[]{arrs[i],count};
        }
        return temp;
    }
}
